package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	example01()
	example02()
	example03(1, 1, 100)
}

// 1、打印九九乘法表。如果可以要求间隔均匀。
func example01() {
	for i := 1; i < 10; i++ {
		for j := 1; j <= i; j++ {
			if j == 1 {
				fmt.Printf("%d*%d=%-2d", i, j, i*j)
			} else {
				fmt.Printf("%d*%d=%-3d", i, j, i*j)
			}
			// fmt.Printf("%d*%d=%d", i, j, i+j)
		}
		fmt.Println()
	}
}

// 2、随机生成100以内的20个非0正整数，打印出来。对生成的数值，第单数个（不是索引）累加求和，第偶数个累乘求积。打印结果
func example02() {
	// 初始数据
	var sum int = 0
	var product int = 1
	var limit int = 20

	// 给定一个数据源
	r := rand.New(rand.NewSource(time.Now().UnixNano()))

	// 循环
	for i := 0; i < limit; i++ {
		v := r.Intn(99) + 1
		if i%2 == 0 {
			sum += v
		} else {
			product *= v
		}
	}
	fmt.Println(sum, product)
}

// 3、打印100以内的斐波那契数列
func example03(a, b, max int) {
	for {
		a, b = b, a+b
		if b > max {
			break
		}
		fmt.Println(b)
	}
}
